001 /* 002 * Copyright 2004-2005 Stephen J. McConnell. 003 * 004 * Licensed under the Apache License, Version 2.0 (the "License"); 005 * you may not use this file except in compliance with the License. 006 * You may obtain a copy of the License at 007 * 008 * http://www.apache.org/licenses/LICENSE-2.0 009 * 010 * Unless required by applicable law or agreed to in writing, software 011 * distributed under the License is distributed on an "AS IS" BASIS, 012 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or 013 * implied. 014 * 015 * See the License for the specific language governing permissions and 016 * limitations under the License. 017 */ 018 019 package net.dpml.station; 020 021 import java.rmi.Remote; 022 import java.rmi.RemoteException; 023 024 import net.dpml.component.Provider; 025 026 import net.dpml.lang.PID; 027 028 import net.dpml.station.info.ApplicationDescriptor; 029 030 /** 031 * Application process controller. 032 * @author <a href="http://www.dpml.net">Digital Product Meta Library</a> 033 * @version 1.0.1 034 */ 035 public interface Application extends Remote 036 { 037 /** 038 * The default startup timeout in seconds. 039 */ 040 public int DEFAULT_STARTUP_TIMEOUT = 6; 041 042 /** 043 * The default shutdown timeout in seconds. 044 */ 045 public int DEFAULT_SHUTDOWN_TIMEOUT = 6; 046 047 /** 048 * Return the application id. 049 * 050 * @return the id 051 * @exception RemoteException if a remote error occurs 052 */ 053 public String getID() throws RemoteException; 054 055 /** 056 * Return the process identifier of the process within which the 057 * application is running. 058 * @return the pid 059 * @exception RemoteException if a remote error occurs 060 */ 061 PID getPID() throws RemoteException; 062 063 /** 064 * Return the profile associated with this application 065 * @return the application profile 066 * @exception RemoteException if a remote error occurs 067 */ 068 ApplicationDescriptor getApplicationDescriptor() throws RemoteException; 069 070 /** 071 * Return the current deployment state of the process. 072 * @return the current process state 073 * @exception RemoteException if a remote error occurs 074 */ 075 ProcessState getProcessState() throws RemoteException; 076 077 /** 078 * Start the application. 079 * @exception RemoteException if a remote error occurs 080 */ 081 void start() throws RemoteException; 082 083 /** 084 * Stop the application. 085 * @exception RemoteException if a remote error occurs 086 */ 087 void stop() throws RemoteException; 088 089 /** 090 * Restart the application. 091 * @exception RemoteException if a rmote error occurs 092 */ 093 void restart() throws RemoteException; 094 095 /** 096 * Return the component instance handler. 097 * @return the instance handler (possibly null) 098 * @exception RemoteException if a remote error occurs 099 */ 100 Provider getProvider() throws RemoteException; 101 102 /** 103 * Add an application listener. 104 * @param listener the listener to add 105 * @exception RemoteException if a remote error occurs 106 */ 107 void addApplicationListener( ApplicationListener listener ) throws RemoteException; 108 109 /** 110 * Remove an application listener. 111 * @param listener the listener to remove 112 * @exception RemoteException if a remote error occurs 113 */ 114 void removeApplicationListener( ApplicationListener listener ) throws RemoteException; 115 } 116